
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    

    <script>
        //宏任务
        setTimeout(() => {
            console.log("settimeout");
        }, 0);

        console.log("script start");
        async1()
        new Promise((resolve,reject)=>{
            // 
            console.log("promise");
            for (let i = 0; i < 10000; i++) {
                if (i==10) {
                    console.log(10);
                }
            }
            i=9999 && resolve("9999")
        }).then(function (res) {
            console.log("res:",res);
            console.log("promise-then");  
            return Promise.resolve("hello")
        }).then(res=>{
            console.log(res);
            console.log("world");
        })

        async function async1() {
            console.log("async1 start");
            await async2()
            console.log("async1 end");
        }
        async function async2() {
            console.log("async2");
        }
        console.log("script end");
        

        // 考察的是事件循环和回调队列。注意以下几点：
        // 1:执行同步任务
        // 2：异步任务队列-微任务-》  回调函数  事件触发的方法  promise  async  gengrator函数
        // 3：异步任务队列-宏任务-》 ajax  页面渲染 setTimeout  setinterval   


    </script>
</body>
</html>